package com.example.a1.fannong.core.http;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 简单封装的HTTP请求
 */
public abstract class SimpleHttpRequester<Data> extends HttpRequester {
    public static final String KEY_WEB_DATA = "data";
    private OnResultListener<Data> onResultListener;

    public SimpleHttpRequester(OnResultListener<Data> onResultListener) {
        this.onResultListener = onResultListener;
    }

    @Override
    protected void onFinish(int code, String msg, JSONObject jsonData) {
        Data data = null;
        if (code == OnResultListener.RESULT_SUCCESS || code == 0) {
            try {
                data = onDumpData(jsonData);
            } catch (JSONException e) {
                e.printStackTrace();
                code = OnResultListener.RESULT_FAILED;
            }
        }
        onResultListener.onResult(code, msg, data);
    }

    /**
     * 解析服务器返回的数据
     * 注意：本方法只有服务器返回200才会执行
     *
     * @param jsonData 服务器返回的数据
     * @return 解析好的java数据
     */
    protected abstract Data onDumpData(JSONObject jsonData) throws JSONException;
}
